import os
import numpy as np
import torch
import torch.nn.functional as F

def gen_golden_data_softmin():
    # 配置参数（保持原有结构）
    dtype = np.float32
    # dtype = np.float32  # 使用float32提高数值稳定性
    input_shape = [8, 1024]
    
    # 生成输入数据（范围设为-10到10）
    # 使用混合分布：80%数据在[-5,5]内，20%在[-10,-5)和(5,10]范围内
    x = np.where(
        np.random.random(input_shape) < 0.8,
        np.random.uniform(-5, 5, input_shape),
        np.random.choice([-1, 1], input_shape) * np.random.uniform(5, 10, input_shape)
    ).astype(dtype)
    
    # 使用PyTorch的softmin函数计算
    x_tensor = torch.from_numpy(x)
    golden_tensor = F.softmin(x_tensor, dim=1)  # 按第1维（行方向）计算softmin
    golden = golden_tensor.numpy().astype(dtype)
    
    # 创建输入输出目录（保持原有方式）
    os.makedirs("./input", exist_ok=True)
    os.makedirs("./output", exist_ok=True)
    
    # 保存文件（保持原有格式）
    x.tofile("./input/input_x.bin")
    golden.tofile("./output/golden.bin")

if __name__ == "__main__":
    gen_golden_data_softmin()